package com.xzcedu.socket;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

/**
 * @author 徐州城
 * @version 1.0
 * 1. 编写一个服务端，和一个客户端
 * 2. 服务器在 9999端口监听
 * 3. 客户端连接到服务端，发送 "Hello Sever"，并接收服务器回发的 "Hello Client" 再退出
 * 4. 服务器端接收到 客户端发送的 信息，输出，并发送 "Hello Client"，再退出
 */
@SuppressWarnings("all")
public class SocketTCP02Client {
    public static void main(String[] args) throws IOException {

        //1. 连接 9999端口
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        //2. 获取socket
        OutputStream outputStream = socket.getOutputStream();
        //3. 用getOutputStream 写入信息
        outputStream.write("Hello Sever".getBytes());
        //设置结束标记
        socket.shutdownOutput();

        //4. 获取和socket相关联的输入流，读取数据(字节)，并显示
        InputStream inputStream = socket.getInputStream();
        byte[] buf = new byte[1024];
        int readLen = 0;
        while ((readLen = inputStream.read(buf)) != -1) {
            System.out.println(new String(buf, 0, readLen));
        }
        socket.shutdownInput();//设置结束标记

        //5. 关闭流和socket
        inputStream.close();
        outputStream.close();
        socket.close();

        System.out.println("客户端退出");
    }
}
